package com.iscas.tech.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iscas.tech.entity.AtExperts;
import com.iscas.tech.vo.AtExpertsQueryVo;
import com.iscas.tech.vo.AtMdbusyValueQueryVo;
import com.iscas.tech.vo.MdWithExpert;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 专家信息表 Mapper 接口
 *
 * @author yangyi
 * @since 2020-10-26
 */
@Repository
public interface AtExpertsMapper extends BaseMapper<AtExperts> {


    /**
     * @param limit      查询数据条数
     * @param offset     从第几条开始返回
     * @param expertType 专家类型{@link com.iscas.tech.bo.ExpertType}
     * @param audit      审核状态（0-未审核 | 1-已审核）
     * @return 分页获取专家/科技人才列表
     */
    List<AtExpertsQueryVo> getExpertOrTalentPageList(@Param("limit") Integer limit,
                                                     @Param("offset") Long offset,
                                                     @Param("expertType") Integer expertType,
                                                     @Param("audit") Integer audit);

    /**
     * @param expertType 获取专家/科技人才数据总数
     * @param audit      审核状态（0-未审核 | 1-已审核）
     * @return 查询异常
     */
    Long getExpertOrTalentCount(@Param("expertType") Integer expertType, @Param("audit") Integer audit);

    /**
     * @param type       专家/科技人才类型
     * @param businessId 业务ID
     * @return 查询专家/科技人才标签分类
     */
    List<AtMdbusyValueQueryVo> getExpertTagList(@Param("type") Integer type, @Param("businessId") Integer businessId);

    /**
     * @param createTitle 记录人ID
     * @return 获取记录人姓名
     */
    String getCreateName(@Param("createTitle") Integer createTitle);

    /**
     * @param publisherId 发布人ID
     * @return 获取发布人真实姓名
     */
    String getPublisherName(@Param("publisherId") Integer publisherId);

    /**
     * @param publisherId 发布人ID
     * @return 获取发布人真实姓名
     */
    String getPublisherPhone(@Param("publisherId") Integer publisherId);

    /**
     * @param id 专家/科技人才主键ID
     * @return 专家/科技人才详情
     */
    AtExpertsQueryVo get(@Param("id") Long id);

    /**
     * @param id 专家/科技人才主键ID
     * @return 审核是否成功
     */
    Boolean checkExpertOrTalent(@Param("id") Long id);

    /**
     * @param expert 专家/科技人才信息
     * @return 记录ID
     */
    Boolean saveExpert(@Param("expert") MdWithExpert expert);

    /**
     * @param id 专家/科技人才主键ID
     * @return 删除专家/科技人才信息
     */
    Boolean deleteExpert(@Param("id") Integer id, @Param("mdType") Integer mdType);
}
